var Controller = Class.create({
  //Параметры url - url на который шлётся запрос
  //container - html элемент, в который записывается результат запроса
  initialize: function(params) {
      this.params = params;
	  this.ajax_params = $H();
	  this.is_busy = false;
	  this.defered = $A();
  },
  
  //Установка параметров которые должны быть переданы на сервер в ajax-запросе
  setParams: function(params) {
  	  this.ajax_params.update(params);
	  return this;
  },
  
  //Запрос на сервер
  update: function() {
  	  this.is_busy = true;
      request(this.params.url, this.ajax_params, this._onUpdate.bind(this));
  },
  
  //Действия после получения запроса
  _onUpdate: function(transport) {
      this.params.container.update(transport.responseText);
	  this.prepareHTML();
	  this.is_busy = false;

	  for (var i=0; i<this.defered.length; i++) {
	  	this.defered[i].method(this.defered[i].param1, this.defered[i].param2);
	  }
	  
	  this.defered.clear();	  
	  
	  this.onUpdate();	  
  },
  
  //Отложить метод
  defer: function(method, param1, param2) {
  	 if (this.is_busy) {
	   this.defered.push({'method': method, 'param1': param1, 'param2': param2});
	   return false;
	 }
	 else {
	 	return true;
	 }
  },
  
  //Обработка полученного с сервера html - навешивание событий и всё такое
  prepareHTML: function() {
  	  
  },
  
  onUpdate: function() {
  	
  }
});